package com.school.entity;

/**
 * 子类：教师，继承自 Person 类
 * 扩展教师个性化属性（所授课程）与方法（开课、打印授课表）
 */
public class Teacher extends Person {
    // 教师个性化属性：所授课程（private 保护，仅本类可见）
    private Course taughtCourse;

    // 子类构造方法：通过 super() 调用父类构造方法
    public Teacher(String id, String name, String gender) {
        super(id, name, gender);
        this.taughtCourse = null;
    }

    // 教师个性化方法：开课（关联课程与教师）
    public void offerCourse(Course course) {
        this.taughtCourse = course;
        course.setTeacher(this); // 反向关联：给课程设置授课教师
        System.out.println(name + "（教师编号：" + getId() + "）开设了课程《" + course.getCourseName() + "》");
    }

    // 重写父类方法：打印教师授课表（个性化实现）
    @Override
    public void printWorksheet() {
        // 复用父类“打印基础信息”逻辑
        super.printWorksheet();
        // 扩展子类个性化逻辑：打印授课信息
        System.out.println("=== 教师授课表 ===");
        if (taughtCourse == null) {
            System.out.println("当前未开设任何课程");
        } else {
            System.out.println("课程名称：" + taughtCourse.getCourseName() +
                    " | 上课地点：" + taughtCourse.getLocation() +
                    " | 时间：" + taughtCourse.getTime());
        }
        System.out.println("================\n");
    }

    // Getter：供外部访问所授课程（private 属性的访问入口）
    public Course getTaughtCourse() {
        return taughtCourse;
    }
}